<?php
/**
 * @author		João Batista Neto
 * @package		rpo
 * @subpackage	cert\interfaces
 * @category	OpenSSL, certificates
 * @license		http://opensource.org/licenses/gpl-license.php GNU Public License
 */
namespace rpo\cert\interfaces;

/**
 * Define a interface para uma chave
 * @author		João Batista Neto
 * @package		rpo
 * @subpackage	cert\interfaces
 * @category	OpenSSL, certificates
 * @license		http://opensource.org/licenses/gpl-license.php GNU Public License
 */
interface IOpenSSLKey extends IOpenSSLResource, IOpenSSLExportable {
	/**
	 * Assina uma requisição de certificado
	 * @param IOpenSSLCertificateRequest $csr A requisição de certificado
	 * @param IOpenSSLData $config Dados de configuração
	 * @param integer $days Dias para expirar o certificado
	 * @param IOpenSSLCertificate $cacert O certificado da CA
	 * @return IOpenSSLCertificate O certificado assinado
	 */
	public function sign( IOpenSSLCertificateRequest $csr , $days = 365 , IOpenSSLCertificate $cacert = null );
}